/**************************************************************************
* This file is part of Hawkengine.
*
* Hawkengine is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Hawkengine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Hawkengine.  If not, see <http://www.gnu.org/licenses/>.
**************************************************************************/

#ifndef _ENGINE_H_
#define _ENGINE_H_

/**************************************************************************
* Dependencies
**************************************************************************/
#include "engine/common.h"
#include "engine/bounds.h"

/**************************************************************************
* Preprocessing
**************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
 
/**************************************************************************
* Types
**************************************************************************/
typedef void (*callback_func_type)(void);

/**************************************************************************
* Variables
**************************************************************************/

/**************************************************************************
* Static Variables
**************************************************************************/

/**************************************************************************
* Function Prototypes
**************************************************************************/
void engine_exit(int code);
void engine_init(const bounds_type* bounds);
void engine_navigate(navigation_type navigation);
void engine_paint(void);
void engine_parse_args(int argc, char* argv[]);
void engine_quit(BOOL exit, int code);
void engine_resize(const bounds_type* bounds);
void engine_session_load(void);
void engine_session_save(void);
void engine_take_screenshot(const char* file_name);
void engine_touch_move(const touch_type* touch);
void engine_touch_start(const touch_type* touch);
void engine_touch_stop(const touch_type* touch);
void engine_update(float secs);

/**************************************************************************
* Function Implementations
**************************************************************************/


#ifdef __cplusplus
}
#endif

#endif
